package com.example.shuiyin.service;

import java.util.Map;
import com.example.shuiyin.dto.payment.PaymentStatusResponse;

/**
 * 支付服务
 */
public interface PaymentService {

    /**
     * 创建支付订单
     */
    Map<String, Object> createPaymentOrder(Long userId, String planId, String paymentMethod, String billingCycle);

    /**
     * 处理支付回调
     */
    void processPaymentWebhook(Map<String, Object> payload, Map<String, String> headers);

    /**
     * 查询支付订单状态
     */
    String queryOrderStatus(String orderId);

    /**
     * 取消支付订单
     */
    void cancelOrder(String orderId, Long userId);

    /**
     * 退款处理
     */
    boolean processRefund(String orderId, Long userId);

    /**
     * 处理支付回调
     * @param payload 回调数据
     * @return 处理结果
     */
    String handleWebhook(String payload);

    /**
     * 获取支付状态
     * @param orderId 订单ID
     * @return 支付状态
     */
    PaymentStatusResponse getPaymentStatus(String orderId);

    /**
     * 取消支付
     * @param orderId 订单ID
     * @return 取消结果
     */
    String cancelPayment(String orderId);
} 